##############################################################################
# nano 编辑器 速查表 (nano Editor Cheatsheet)
# 一个简单易用的命令行文本编辑器。
# https://github.com/funnyzak/cli-cheatsheets
##############################################################################

# 图例 (Legend):
#   ^  代表 Ctrl 键 (e.g., ^X 表示 Ctrl+X)
#   M- 代表 Alt 键 或 Esc 键 (e.g., M-U 表示 Alt+U 或 Esc 后按 U)
#   [ ] 中的内容是可选的或需要替换的参数

##############################################################################
# 启动与退出 (Starting & Exiting)
##############################################################################

nano [options] [filename]       # 打开文件进行编辑 (如果文件不存在则创建)
nano +LINE,COL [filename]       # 打开文件并跳转到指定行和列
nano -l [filename]              # 显示行号 (或在 ~/.nanorc 中设置)
nano -m [filename]              # 启用鼠标支持 (或在 ~/.nanorc 中设置)
nano -i [filename]              # 启用自动缩进 (或在 ~/.nanorc 中设置)
nano -c [filename]              # 持续显示光标位置 (或在 ~/.nanorc 中设置)

^X                              # 退出 nano (会提示保存修改)
  -> Y (Yes)                    #   确认保存
  -> N (No)                     #   不保存退出
  -> ^C (Cancel)                #   取消退出操作

##############################################################################
# 文件操作 (File Operations)
##############################################################################

^O                              # 保存当前文件 (WriteOut)
  -> Enter                     #   确认文件名并保存
  -> 输入新文件名 + Enter      #   另存为新文件
^R                              # 插入另一个文件到当前光标位置 (Read File)
M-F                             # 切换/启用多文件缓冲区 (如果编译时支持)
M-<                             # 切换到上一个文件缓冲区
M->                             # 切换到下一个文件缓冲区

##############################################################################
# 导航与移动 (Navigation & Movement)
##############################################################################

# 基本移动 (Basic Movement)
方向键                          # 上/下/左/右移动光标
^F                              # 光标前进一个字符 (Forward)
^B                              # 光标后退一个字符 (Backward)
^N                              # 光标移动到下一行 (Next Line)
^P                              # 光标移动到上一行 (Previous Line)
^A                              # 光标移动到行首 (Start of Line)
^E                              # 光标移动到行尾 (End of Line)

# 页面滚动 (Scrolling)
^Y                              # 向上翻页 (Page Up)
^V                              # 向下翻页 (Page Down)
M-\  或  Home                   # 跳转到文件开头
M-/  或  End                    # 跳转到文件末尾

# 跳转 (Jumping)
^_  或  ^G (Get Help 菜单中选 Go to Line) # 跳转到指定行号 (或行号,列号)
^C                              # 显示当前光标位置 (行号, 列号, 字符位置)
M-]                             # 跳转到匹配的括号 ( ), { }, [ ]

##############################################################################
# 编辑操作 (Editing Operations)
##############################################################################

# 剪切、复制、粘贴 (Cut, Copy, Paste)
^K                              # 剪切当前行 (或选中的文本) 到剪贴板 (Cut)
M-^ 或 M-6                      # 复制当前行 (或选中的文本) 到剪贴板 (Copy)
^U                              # 粘贴剪贴板内容 (Uncut / Paste)
  (多次 ^K 会将多行累积到剪贴板)

# 文本选择 (Text Selection)
M-A                             # 开始/结束标记文本 (Mark Text)
  (移动光标选择区域, ^K 或 M-^ 对选中区域操作)

# 删除 (Deleting)
Backspace                       # 删除光标前一个字符
Delete                          # 删除光标处字符
M-Backspace                     # 删除光标前一个单词
^Delete 或 M-Delete             # 删除光标后一个单词
^D                              # 删除光标处的字符 (同 Delete)

# 撤销与重做 (Undo / Redo)
M-U                             # 撤销上一步操作 (Undo)
M-E                             # 重做上一步操作 (Redo)

# 缩进 (Indentation)
Tab                             # 插入 Tab 字符或空格 (根据设置)
M-I                             # 自动缩进当前行
M-{                             # 减少选中区域的缩进 (Unindent)
M-}                             # 增加选中区域的缩进 (Indent)

# 其他 (Others)
^J                              # 对齐当前段落 (Justify)
^T                              # 运行拼写检查 (需要安装 spell)
M-J                             # 对齐整个文件 (Full Justify)

##############################################################################
# 搜索与替换 (Search & Replace)
##############################################################################

^W                              # 搜索文本 (Where Is / Find)
  -> 输入搜索词 + Enter         #   开始搜索
  -> M-C                        #   切换大小写敏感 (Case Sensitive Toggle)
  -> M-R                        #   切换正则表达式模式 (Regex Toggle)
M-W                             # 查找下一个匹配项 (Find Next)

^\  或  M-R                     # 搜索并替换 (Replace)
  -> 输入要搜索的词 + Enter
  -> 输入替换后的词 + Enter
  -> A (All)                    #   替换所有匹配项
  -> Y (Yes)                    #   替换当前匹配项并查找下一个
  -> N (No)                     #   跳过当前匹配项并查找下一个
  -> ^C (Cancel)                #   取消替换操作

##############################################################################
# 视图与选项 (View & Options)
##############################################################################

^G                              # 显示帮助文档 (列出常用快捷键)
M-C                             # (在搜索提示时) 切换大小写敏感
M-I                             # 切换自动缩进开关
M-M                             # 切换鼠标支持开关 (如果启动时未指定)
M-P                             # 切换显示空白字符开关 (Whitespace display)
M-X                             # 切换帮助行显示开关 (Help line toggle)
M-$                             # 切换软换行开关 (Soft wrap toggle)

##############################################################################
# 实用技巧 (Tips and Tricks)
##############################################################################

# 配置文件:
#   用户配置文件通常位于 `~/.nanorc` 或 `~/.config/nano/nanorc`
#   系统配置文件位于 `/etc/nanorc`
#   可以在配置文件中设置默认选项，例如 `set autoindent`, `set mouse`, `set linenumbers`

# 多次剪切:
#   连续使用 ^K 剪切多行，它们会被合并到剪贴板中，^U 可以一次性粘贴所有剪切的行。

# Esc 键替代 Alt:
#   如果 Alt 键无效或被终端占用，可以使用 Esc 键。例如 M-U 可以按 Esc 然后再按 U。

##############################################################################
# 示例 (Examples)
##############################################################################

# 打开文件并显示行号:
#   nano -l my_script.sh

# 打开配置文件并跳转到第 50 行:
#   nano +50 /etc/nginx/nginx.conf

# 不保存直接退出:
#   ^X 然后按 N

##############################################################################
# 鸣谢 & 更多资源 (Credit & Further Resources)
##############################################################################

# GNU nano 官方网站: https://www.nano-editor.org/
# nano 手册页: man nano

# vim: set ts=4 sw=4 tw=0 et ft=bash :
